﻿// Raphaël Capocasale

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Te1Capocasale
    {
    class Program
        {
        static void Main(string[] args)
            {
            Forme2D[] tabForme = new Forme2D[10];
            bool isFinished = false;
            bool isType = true;
            do
                {
                menu();
                ConsoleKeyInfo d = System.Console.ReadKey();
                System.Console.WriteLine("");
                switch (d.KeyChar)
                    {
                    case '1':
                    int i = 0;
                    foreach (Forme2D forme in tabForme)
                        {
                        System.Console.Write("" + i + ":");
                        if (forme is Forme2D)
                            {
                            forme.afficher();
                            }
                        System.Console.WriteLine("");
                        i++;
                        }
                    System.Console.WriteLine("Il y a actuellement "+Forme2D.nbCpt+" objets de type Forme2D en mémoire");
                    System.Console.WriteLine("appuyez sur une touche pour continuer...");
                    System.Console.ReadKey(); 
                    break;

                    case '2':
                    int j = 0;
                    for (; j < tabForme.Length; ++j)
                        {
                        if (tabForme[j] == null)
                            {
                            break;
                            }
                        }
                    if (j == tabForme.Length)
                        {
                        j = 0;
                        }

                    if (isType)
                        {
                        tabForme[j] = new Cercles();
                        isType = false;
                        }
                    else
                        {
                        tabForme[j] = new Polygones();
                        isType = true;
                        }

                    break;

                    case '3':
                    int indice = 0;
                    do
                        {

                        System.Console.WriteLine("Quelle indice ?");
                        String str = System.Console.ReadLine();
                        try
                            {
                            indice = Convert.ToInt32(str);
                            if (indice >= 0 | indice < tabForme.Length)
                                {
                                break;
                                }
                            }
                        catch (Exception)
                            {
                            
                            }
                        }
                    while (true);

                    tabForme[indice] = null;

                    break;

                    case '4':
                    isFinished = true;
                    break;

                    default:
                    System.Console.WriteLine("Mauvaise touche !");
                    break;
                    }

                } while (!isFinished);
            }

        private static void menu()
            {
            System.Console.Clear();
            System.Console.WriteLine("Vos options sont :");
            System.Console.WriteLine("1) Afficher les objets");
            System.Console.WriteLine("2) Créer un nouvel objet");
            System.Console.WriteLine("3) Détruire un objet");
            System.Console.WriteLine("4) Terminer");
            }
        }
    }
